#pragma once

#include <memory>

#include <noether_tpp/tool_path_planners/raster/raster_planner.h>

namespace noether
{
    /**
     * @brief 返回轴对齐边界框（AABB）的中心作为原点
     * 
     * 这个结构体实现了从传入的点云 mesh 计算其 AABB 的中心并将其作为原点。
     */
    struct AABBCenterOriginGenerator : public OriginGenerator
    {
        // 覆盖 OriginGenerator 类中的 generate 方法，计算 AABB 的中心并返回
        Eigen::Vector3d generate(const pcl::PolygonMesh& mesh) const override final;
    };

}  // namespace noether